// === AutoX.js 手机APP通知监听 + 推送电脑（完全静默版）===
// 🚫 无控制台、无悬浮窗、无交互，纯后台运行

// 🔁 重要：不要调用 console.show()，否则会弹出悬浮窗
// 所有 log 将输出到 AutoX.js 的日志文件中（可在App内查看）

// ✅ 配置电脑 IP 和端口
var pcIP = rawInput("请输入电脑局域网 IP", "192.168.1.16");  // 🔧 替换为你的电脑局域网 IP
var pcPort = 8080;

// 🟡 不需要无障碍服务，只监听通知栏
// events.observeNotification() 不需要 root 或无障碍权限

// 开始监听系统通知
events.observeNotification();

// 可选：写一条日志（仅写入文件，不显示在屏幕上）
log("✅ 微信通知转发已启动，正在监听...");

// 监听通知事件
events.on('notification', function (n) {
    try {
        var pkg = n.getPackageName();
        var title = n.getTitle() || "新消息";
        var text = n.getText() || "";
        var when = new Date(n.when).toLocaleTimeString();

        // 仅记录关键信息到日志（不显示在屏幕上）
        log("📱 收到通知: [%s] %s - %s", pkg, title, text);

        // ✅ 默认转发所有信息，将下方if语句前斜杠删除，可转换为只转发微信
        //if (pkg == "com.tencent.mm") {
            sendToPC(title, text, when);
        //}
        // 过滤不必要提示的通知 以下是OPPO手机通知包名
        if (pkg === "android" || pkg === "com.coloros.usbselection") {
            return;
        }
    } catch (e) {
        log("❌ 处理通知失败: " + e);
    }
});

// 发送通知到电脑
function sendToPC(title, text, time) {
    log("📤 推送通知到电脑: %s - %s", title, text);

    let payload = JSON.stringify({
        title: title,
        text: text,
        package: "com.tencent.mm",
        time: time
    });

    // 使用线程 + okhttp 发送 POST
    threads.start(new java.lang.Runnable({
        run: function () {
            try {
                let OkHttpClient = Packages.okhttp3.OkHttpClient;
                let Request = Packages.okhttp3.Request;
                let RequestBody = Packages.okhttp3.RequestBody;
                let MediaType = Packages.okhttp3.MediaType;

                let client = new OkHttpClient.Builder()
                    .connectTimeout(10, java.util.concurrent.TimeUnit.SECONDS)
                    .writeTimeout(10, java.util.concurrent.TimeUnit.SECONDS)
                    .readTimeout(10, java.util.concurrent.TimeUnit.SECONDS)
                    .build();

                let JSON = MediaType.get("application/json; charset=utf-8");
                let body = RequestBody.create(JSON, payload);

                let request = new Request.Builder()
                    .url(`http://${pcIP}:${pcPort}/notify`)
                    .post(body)
                    .build();

                let response = client.newCall(request).execute();
                if (response.isSuccessful()) {
                    log("✅ 推送成功！状态码: " + response.code());
                } else {
                    log("⚠️ HTTP 错误: " + response.code());
                }
                response.close();
            } catch (e) {
                log("🚫 推送失败: " + e);
            }
        }
    }));
}